#-*- coding: utf-8 -*-
'''
author : Bruno Rendeiro 11236  \
			& André Simão 6039
date : 23 de outubro de 2012
obs : 3 parte

'''
 
#  name: desconhecido
#  @param
#  @return


import wx

import parte2

#cria as listas
listaAno=[ ]  #ano
listaIpc=[ ]  #ipc global
listaTaxa=[ ]  #taxa
listaMinimo=[ ]	#minimo
listaMaximo=[ ]	#maximo
listaPib=[ ]	#PIB
listaNacional=[ ]	#rendimento nacional
listaDisponivel=[ ]	#rendimento disponivel
listaRenumeracao=[ ]	#renumeracao
listaEvoMin=[ ]  #evolucao renumeracoes minimas
listaEvoMax=[ ]  #evolucao renumeracoes maximas


ID_EXIT = 110

class WindowClass(wx.Frame):
	
	def __init__(self,*args,**kwargs):
		super(WindowClass,self).__init__(*args,**kwargs)
		
		self.basic_gui()	

	def basic_gui(self):
		
		panel = wx.Panel(self)		
		self.CreateStatusBar()
		self.SetStatusText("LP1415")		
		menuBar=wx.MenuBar()
		fileMenu=wx.Menu()
		exitItem=fileMenu.Append(ID_EXIT,'Sair','Sair da App') 
		menuBar.Append(fileMenu, '&File')
		
		
		'''
		Valor do ano do primeiro intervalo
		'''
		a=0
		while a >2012 or a <1977:
			anoDialog= wx.TextEntryDialog(None,'1977 a 2013','primeira data do intervalo?','')
			if anoDialog.ShowModal()== wx.ID_OK:
				ano1=anoDialog.GetValue()
				a=int(ano1)	
			else:		
				Close()
		anoDialog.Destroy()
			
		'''
		Valor do ano do segundo intervalo
		'''
		b=0
		y=a+1
		y1=str(y)
		
		while b >2013 or b < y:	
			ano2Dialog= wx.TextEntryDialog(None,y1 +' a 2013','segunda data do intervalo?','')
			if ano2Dialog.ShowModal()== wx.ID_OK:
				ano2=ano2Dialog.GetValue()
				b=int(ano2)		
			else:		
				Close()
		ano2Dialog.Destroy()	
			
		
		'''
		pedido de confirmacao
		'''
		yesNoDialog = wx.MessageDialog(None,'de '+ ano1 +" a "+ ano2 + ' tem a certesa?', 'Pergunta', wx.YES_NO)
		yesNoAnswer=yesNoDialog.ShowModal()
		yesNoDialog.Destroy()
		if yesNoAnswer == wx.ID_NO:			
			main()
				
		#preenche as listas com o intervalo de ano desejado
		parte2.preencher_listas(a,b,listaAno,listaIpc,listaTaxa,listaMinimo,listaMaximo,listaPib,listaNacional,listaDisponivel,listaRenumeracao,listaEvoMin,listaEvoMax)
		#preenche valores nulos das listas
		parte2.preencher_nulos(listaAno,listaIpc,listaTaxa,listaMinimo,listaMaximo,listaPib,listaNacional,listaDisponivel,listaRenumeracao,listaEvoMin,listaEvoMax)
				
		'''
		Escolha da lista que deseja
		'''	
		chooseOneBox = wx.SingleChoiceDialog(None,"que estatistica deseja?", "Listas",["IPC Global", \
			"Taxa Inflacao","remuneracao minima mensal dos funcionarios","remuneracao maxima mensal dos funcionarios",\
			"evolucao das remuneracoes","(PIB) per capita", "rendimento nacional anual bruto per capita",\
			"rendimento disponivel anual bruto per capita", "remuneracoes per capita anuais"])
		
		estat= None
		if chooseOneBox.ShowModal() == wx.ID_OK:
			estat = chooseOneBox.GetStringSelection()			
		chooseOneBox.Destroy()
			
			
			
			
		def showEstatistica(lista1,lista2,name,xLabel,yLabel):
			
			
			parte2.graf_recta(lista1,lista2,name,xLabel,yLabel)
			
			
			
			parte2.estatistica(listaRenumeracao)
			
			
			
			
			aweText=wx.StaticText(panel,-1, name,(3,10))
			aweText.SetForegroundColour('blue')
			aweText=wx.StaticText(panel,-1,"Media: %s" % ( parte2.media(lista2)),(3,25))
			aweText=wx.StaticText(panel,-1,"Variancia: %s" % ( parte2.variancia(lista2)),(3,40))
			aweText=wx.StaticText(panel,-1,"Desvio Medio: %s" % ( parte2.desvioMedio(lista2)),(3,55))
			aweText=wx.StaticText(panel,-1,"Desvio Padrao: %s" % ( parte2.desvioPadrao(lista2)),(3,70))
			aweText=wx.StaticText(panel,-1,"Coeficiente de variacao: %s" % ( parte2.variacao(lista2)),(3,85))	
			
			
				
		if estat=="IPC Global":
			showEstatistica(listaAno,listaIpc,"Grafico do IPC","ANO","IPC")
									
		if estat=="Taxa Inflacao":
			showEstatistica(listaAno,listaTaxa,"Taxa Inflacao","ANO","TAXA")
												
		if estat=="remuneracao minima mensal dos funcionarios":
			showEstatistica(listaAno,listaMinimo,"Renumeracao minima","ANO","Renumercao")
									
		if estat=="remuneracao maxima mensal dos funcionarios":
			showEstatistica(listaAno,listaMaximo,"Renumeracao maxima","ANO","Renumercao")
						
		if estat=="evolucao das remuneracoes":
			print "minima:"
			parte2.estatistica(listaMinimo)
			print "\nmaxima:"
			parte2.estatistica(listaMaximo)
			parte2.graf_recta2(listaAno,listaMaximo,listaMinimo,"evolucao Renumeracoes","ANO","renumeracoes","maximas","minimas")
			aweText=wx.StaticText(panel,-1, "Estatistica  de Renumeracao Minima: ",(3,10))
			aweText.SetForegroundColour('blue')
			aweText=wx.StaticText(panel,-1,"Media: %s" % ( parte2.media(listaMinimo)),(3,25))
			aweText=wx.StaticText(panel,-1,"Variancia: %s" % ( parte2.variancia(listaMinimo)),(3,40))
			aweText=wx.StaticText(panel,-1,"Desvio Medio: %s" % ( parte2.desvioMedio(listaMinimo)),(3,55))
			aweText=wx.StaticText(panel,-1,"Desvio Padrao: %s" % ( parte2.desvioPadrao(listaMinimo)),(3,70))
			aweText=wx.StaticText(panel,-1,"Coeficiente de variacao: %s" % ( parte2.variacao(listaMinimo)),(3,85))
			aweText=wx.StaticText(panel,-1, "Estatistica  de Renumeracao Maxima: ",(3,100))
			aweText.SetForegroundColour('blue')
			aweText=wx.StaticText(panel,-1,"Media: %s" % ( parte2.media(listaMaximo)),(3,115))
			aweText=wx.StaticText(panel,-1,"Variancia: %s" % ( parte2.variancia(listaMaximo)),(3,130))
			aweText=wx.StaticText(panel,-1,"Desvio Medio: %s" % ( parte2.desvioMedio(listaMaximo)),(3,145))
			aweText=wx.StaticText(panel,-1,"Desvio Padrao: %s" % ( parte2.desvioPadrao(listaMaximo)),(3,160))
			aweText=wx.StaticText(panel,-1,"Coeficiente de variacao: %s" % ( parte2.variacao(listaMaximo)),(3,175))
						
		if estat=="(PIB) per capita":
			showEstatistica(listaAno,listaPib,"Grafico do PIB","ANO","Pib")
			
				
		if estat=="rendimento nacional anual bruto per capita":
			showEstatistica(listaAno,listaNacional,"rendimento nacional","ANO","Rendimento")
							
		if estat=="rendimento disponivel anual bruto per capita":
			
			showEstatistica(listaAno,listaDisponivel,"rendimento disponivel anual","ANO","rendimento")
											
		if estat=="remuneracoes per capita anuais":
			showEstatistica(listaAno,listaRenumeracao,"renumeracoes per capita anual","ANO","renumeracoes")
																				
		self.SetMenuBar(menuBar)		
		self.Bind(wx.EVT_MENU,self.onQuit,exitItem)	
		
			
		self.SetSize((400,300))
		self.SetTitle('Estatistica  de '+ estat)			
		
		self.Show()			
			
	def onQuit(self,e):
		self.Close()
		
def main():		
	app=wx.App()
	WindowClass(None)
	app.MainLoop()
							
main()
